1. Field of the Invention
This invention relates generally to computer systems having a peripheral bus, and more particularly to methods for extending the number of devices that can be connected to a computer system via a peripheral bus.
2. Description of the Related Art
Modern computer systems often utilize one or more buses to connect to peripheral devices to enhance its resources. For example, the resources of a computer system may be substantially increased by connecting the computer system to one or more peripheral devices such as disk drives, tape drives, printers, scanners, optical drives, and the like. These peripheral devices are attached to the computer system by means of a peripheral bus (e.g., cable).
One of the most widely used peripheral buses is the well known small computer systems interface (SCSI) bus, which is defined in conformity with well known SCSI protocols (e.g., SCSI-1, SCSI-2, SCSI-3, etc.), which are incorporated herein by reference. The SCSI protocols are designed to provide an efficient peer-to-peer I/O interface between a host computer and its peripheral devices in a computer system.
FIG. 1 illustrates a block diagram of an exemplary computer system 100 having a host computer 102, an SCSI host adapter 104, a plurality of SCSI devices 106, and an SCSI bus 108. The SCSI host adapter 104 is coupled between the host computer 102 and the SCSI devices 106. Specifically, the host computer 102 is coupled to the SCSI host adapter 104 by means of a host bus 110 such as a PCI bus or the like. On the other hand, the SCSI devices 106 are coupled to the host adapter 104 by means of the SCSI bus 108. Under the conventional SCSI specifications, the SCSI bus 108 may connect up to 15 SCSI devices 106 to the host adapter 104 depending on the type of SCSI bus implemented. Since the SCSI host adapter 104 is, in reality, an SCSI device, up to 16 SCSI devices may be connected to the host computer 102. The SCSI devices 106 may be devices such as disk drives, tape drives, printers, scanners, optical drives, or any other devices that meet the SCSI specification.
The host adapter 104 in the computer system 100 controls communication between the host computer 102 and the SCSI devices 106 and includes a host interface 112 and SCSI adapter circuitry 114. The host interface 112 is configured to provide a physical connection between the host bus 110 and the SCSI adapter circuitry 114. The SCSI host adapter circuitry 114, on the other hand, is configured to receive data, address, and control signals from the host computer 102 via the host bus 110 and convert the signals into corresponding SCSI compatible data, address, and control signals. Conversely, the SCSI host adapter circuitry 114 is also configured to receive SCSI compatible data, address, and control signals from the SCSI devices 106 through the SCSI bus 108 and convert them into corresponding host-bus compatible data, addressing, and control signals. The SCSI host adapter chip 104 is well known in the art and may be implemented, for example, by using AIC-7890A(trademark) packaged semiconductor device, which is available from Adaptec Inc., of Milpitas, Calif.
Currently, the SCSI bus 108 is generally implemented as a cable having a set of parallel wires. For example, the SCSI-1 cable has 50 wires. Of these 50 wires, eight wires are for data, one wire is for parity, nine wires are for control, 25 wires are for ground, and the remaining wires are for power or are reserved for future use. The eight data wires are used to carry eight bits of data in parallel. In general, conventional SCSI bus cables include either eight or 16 data wires for carrying eight or 16 bits, respectively, of data in parallel. The data wires in the bus thus define a datapath for communicating bits equal to the number of data wires in the bus.
A traditional SCSI bus may accommodate a plurality of SCSI devices up to a maximum number equal to the number of data bits in the SCSI bus. In practice, the width of the SCSI datapath is typically 8 or 16 bits corresponding to the number of data wires in the SCSI bus. This means the maximum number of SCSI devices, including a host adapter, that can be attached to a host computer is 8 or 16.
In recent years, however, the SCSI bus technology has evolved to a point where it is now capable of handling more data throughput than the connected SCSI devices, even at the maximum number of devices allowed for the bus, can generally utilize. For example, a recent SCSI standard commonly known as xe2x80x9cSCSI Parallel Interface-3xe2x80x9d (SPI-3), which is incorporated herein by reference, allows data transfer of 80 Megabytes per second (MB/sec) or 160 MB/sec on a wide bus.
Unfortunately, using such a high bandwidth bus for only the prescribed maximum number of peripheral devices results in under-utilization of the valuable bus resources. This is because the newer SCSI buses typically have sufficient bandwidth to accommodate more than the maximum prescribed number of devices, which is currently 16. At such high data transfer rates, the SCSI bus may not be utilized to its full capacity due to the limitation in the maximum number of devices that can be attached to the bus.
In view of the foregoing, what is needed is a method for extending the number of devices that can be connected to an SCSI bus and addressed efficiently so as to more fully utilize the increased data throughput capacity of the SCSI bus.
The present invention fills these needs by providing methods for addressing an extended number of peripheral devices over a peripheral bus. It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium. Several inventive embodiments of the present invention are described below.
In one embodiment, the present invention provides a method for addressing an extended number of peripheral devices over a bus. In this method, a bus having an N-bit datapath is provided in a computer system. An extended address space is defined for a set of extended peripheral devices by assigning a bus ID to each extended peripheral device. Each bus ID includes a group ID and a group member ID. Each group ID and group member ID also indicates a priority of the associated device. One or more peripheral devices arbitrate for the bus. In this process, a peripheral device having the highest priority group ID and the highest priority group member ID among the arbitrating devices wins the arbitration. After arbitration, the winning device selects, for transferring data, a device by placing on the bus the bus IDs of the selecting and selected devices. Preferably, the bus is an SCSI bus and the devices are SCSI devices. In another embodiment, the arbitration process is implemented in accordance with quick arbitration as defined by SPI-3.
In another embodiment, the present invention provides a method for addressing more than N peripheral devices that are coupled to a host computer system via a bus. The bus includes an N-bit datapath. The method includes: (a) defining an extended address space for (N/2)-by-(N/2) peripheral devices by assigning a bus ID to each peripheral device with each bus ID being associated with a first ID and a second ID, wherein each of the first and second IDs indicate a priority of the associated device; (b) arbitrating, by one or more peripheral devices, for the bus wherein a peripheral device having a highest priority first ID and a highest priority second ID wins the arbitration; (c) selecting, by the winning device, a target device by placing on the bus the bus IDs including the first IDs and the second IDs of the winning and target devices, the winning device selecting the target device for transferring data; and (d) when the data transfer has not been completed, repeating operations (b) to (c), wherein the target device arbitrates for the bus and reselects the winning device for completing the data transfer.
In yet another embodiment, a method is provided for addressing a plurality of SCSI devices over an SCSI bus having an N-bit datapath. In this method, an SCSI ID is assigned to each peripheral device with each SCSI ID being defined by partitioning the N-bit datapath into a first ID field and a second ID field. The first ID field defines a first ID and the second ID field defines a second ID, wherein each of the first and second IDs indicate a priority of an associated device. Peripheral devices needing access to the bus arbitrate for the bus. In the arbitration process, a peripheral device having a highest priority first ID and a highest priority second ID wins the arbitration as an initiator. After the arbitration process, the initiator selects a target device for transferring data therebetween by placing on the bus the SCSI IDs of the initiator and the target device. The operations of arbitrating and selecting are repeated if the data transfer has not been completed with the target device arbitrating for the bus and reselecting the initiator to complete the data transfer.
Advantageously, the methods of the present invention allow more than the conventional number of peripheral devices to be coupled to a computer system. In particular, the partitioning of the N-bit datapath of the bus to provide group and group member IDs allows substantially more devices to be accommodated on the bus. For example, partitioning of a 16-bit datapath into an 8-bit group ID and an 8-bit group member ID effectively allows 8-by-8 or 64 devices to be addressed on the bus. In addition, the methods of the present invention may be used in quick arbitration and fairness arbitration to enhance speed and maintain fairness in the arbitration process. Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.